<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>地图参数</title>
    <!-- 引入高德的api -->
    <script>
      window._AMapSecurityConfig = {
        securityJsCode: '7d2d9accb7d38744e2a2e08d96bcea79',
      };
    </script>
    <script src="https://webapi.amap.com/loader.js"></script>
    <!-- 设置地图样式 -->
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      html,
      body,
      #container {
        width: 100%;
        height: 100%;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    <!-- 二、创建地图容器 -->
    <div id="container"></div>
    <script>
      AMapLoader.load({
        key: '086ec8679a65c0d8de2097e74c4f2758', //申请好的Web端开发者 Key，调用 load 时必填
        version: '2.0', //指定要加载的 JS API 的版本，缺省时默认为 1.4.15
      })
        .then((AMap) => {
          console.log(AMap);
          // 四、加载地图
          // 定义一个变量，保持一个对象
          const map = new AMap.Map('container', {
            center: [114.3, 30.6], //设置地图中心点的经纬度
            zoom: 12, //地图的缩放比例（3~20）
          });
          // 1、创建俩个点（设置可以拖动）
          var m1 = new AMap.Marker({
            map, //将m1这个点添加到map 地图中
            draggable: true, // 配置该点可以拖动
            position: new AMap.LngLat(114.255025, 30.621275),
          });
          var m2 = new AMap.Marker({
            map, //将m2这个点添加到map 地图中
            draggable: true, // 配置该点可以拖动
            position: new AMap.LngLat(114.334332, 30.569608),
          });
          // 让地图根据覆盖物调整地图显示区域
          map.setFitView();
          // 2、准备一条线
          var line = new AMap.Polyline({
            strokeColor: '#80d6ff', //描边的颜色
            isOutline: true, // 包含轮廓
            outerlineColor: 'white',
          });
          line.setMap(map);
          // 3、准备文本
          var text = new AMap.Text({
            text: '',
            style: {
              'background-color': '#29b6f6',
              'border-color': '#e1f5fe',
              'font-size': '16px',
            },
          });
          text.setMap(map);
          // 4、计算
          function compute() {
            // 得到 m1 和 m2 的经纬度
            var p1 = m1.getPosition();
            var p2 = m2.getPosition();
            // 希望text文本显示在这个经纬度中间
            var textPos = p1.divideBy(2).add(p2.divideBy(2)); // (p1+p2)/2
            // 计算两个点之间的距离
            var distance = Math.round(p1.distance(p2));
            var path = [p1, p2];
            line.setPath(path); // 绘制线,根据p1, p2起始点和终点的坐标
            text.setText(`距离为${distance}米`);
            text.setPosition(textPos);
          }
          compute();
          m1.on('dragging', compute);
          m2.on('dragging', compute);
        })
        .catch((e) => {
          console.error(e); //加载错误提示
        });
    </script>
  </body>
</html>
